为您找到与c语言中do while语句的用法及规则相关的共200个结果:
浏览量:2
下载量:0
时间:
循环结构是结构化程序设计的三种基本结构之一。下面小编就跟大家分享下c语言do while的用法。
do-while语句的一般形式为:
do
语句
while(表达式);
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。其执行过程可用下图表示。
main(){
int i,sum=0; i=1; do{
sum=sum+i; i++; }
while(i<=100);
printf("%d",sum); }
同样当有许多语句参加循环时, 要用"{"和"}"把它们括起来。
【例6-6】while和do-while循环比较。
1) while循环:
main(){
int sum=0,i; scanf("%d",&i); while(i<=10){ sum=sum+i; i++; }
printf("sum=%d",sum); }
2) do-while循环: main(){
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
int sum=0,i; scanf("%d",&i); do{
sum=sum+i;
浏览量:3
下载量:0
时间:
在C语言中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面小编就为大家分享c语言里while的用法,希望对你有用。
1、避免goto语句:
通常,如果一个函数开始要分配一些资源,然后如果在中途遇到错误则要退出函数,当然,退出前要释放资源,我们的代码可能如下:
C代码
这里最大的问题是代码冗余,每增加一个操作,就要做相应的错误处理,非常不灵活,于是想到了一下的goto:
C代码
代码冗余是解决了,但是引入了C语言中比较微妙的goto语句,虽然正确的使用goto语句可以大大提高程序的灵活性与简洁性,但是会使我们的程序捉摸不定,为了既避免使用goto语句,又能消除代码冗余,可以考虑使用下面的 do...while(0):
C代码
2、避免空声明在编译时出现警告:
在linux内核源代码中,经常看到如下宏以避免在编译时出现警告:
#define FOO do { } while(0)
3、提供一个声明局部变量的基础块:
你可能经常会使用如下的宏:
#define exch(x,y) { int tmp; tmp=x; x=y; y=tmp; }
然而在某些情况下将会失效,下面的代码使用if...else...
if (x > y)
exch(x,y); https:// 分支 1
else
do_something(); https:// 分支 2
但是将被解释为一个分支的if语句:
if (x > y) {
int tmp;
tmp = x;
x = y;
y = tmp;
}
; https:// 空语句
else https:// ERROR!!!
do_something();
错误出在“;”直接位于代码块的后面,解决的办法是将代码嵌入do...while(0),于是得到下面的代码:
1 if (x > y)
2 do {
3 int tmp;
4 tmp = x;
5 x = y;
6 y = tmp;
7 } while(0);
8 else
9 do_something();
?于是上面的宏可以修改为:
1 #define exch(x,y) do {
2 int tmp;
3 tmp = x;
4 x = y;
5 y = tmp;
6 } while(0)
4、在条件语句中使用复杂的宏:
假如一个宏包含类似如下几行代码:
#define FOO(x)
printf("arg is %s", x);
do_something_useful(x);
现在想像一下下面的代码:
if (blah == 2)
FOO(blah);
这将解释为:
if (blah == 2)
printf("arg is %s", blah);
do_something_useful(blah);;
我们就会发现,if语句只作用于printf(), do_something_useful() 没按照愿意一起执行,即没有像你预期的那样被包含在if代码中,于是可以使用如下的代码块:
if (blah == 2)
do {
printf("arg is %s", blah);
do_something_useful(blah);
} while (0);
这样上面的宏就可以改为:
1 #define FOO(x) do {
2 printf("arg is %s", blah);
3 do_something_useful(blah);
4 } while (0)
PS:以上的第三种和第四种技巧,并不是唯一的方法,有同学留言说用其他的方法也可以实现,反而显得这样的宏定义过于花哨?事实并非如此,这样的宏定义在linux内核代码中非常常见,原因是代码简洁、通用、可移植性好
浏览量:3
下载量:0
时间:
浏览量:2
下载量:0
时间:
C、C++、C#和Java这些语言中,for语句的语法和执行流程都是一样的。本文将就这一语句的在C语言中的用法进行一个较为深入的讨论。
复制代码 代码如下:
for (表达式1;表达式2;表达式3)
{
循环语句
}
表达式1 给循环变量赋初值
表达式2 为循环条件
表达式3 用来修改循环变量的值,称为循环步长。
for语句的执行流程:
例:编程计算:1+2+3+...+99+100的结果。
这是累加问题,累加问题的通用表达式为:S = S + T;
其中,S是一个变量,用来存储累加最后的结果,称之为累加器;T是一个表达式,代表每次需要加入累加器的中的值。
累加一般是通过循环结构实现的。循环之前要设置累加器S的初始值为0。
累加项T可以是很简单的表达式,也有可能是一个通过分析得到的较复杂的表达式。
?
1
2
3
4
5
6int S = 0;
for (int i = 1; i <= 100; i++)
{
S = S + i;
}
printf("%d",S);
注意:
1)对于已经确定是累加算法的题目,首先确定累加项与循环变量的关系;
2)然后,考虑第一个累加项的值是多少,以确定循环变量的初值;
3)其次,确定最后一个累加项的值,确定循环条件;
4)最后,考虑每个累加项之间的关系,以确定循环变量的变化(步长值)。
例:编程计算S = a + aa + aaa + aaaa + ... 的前n项之和。
例如:如果a = 3,n = 5,则表达式为:S = 3 + 33 + 333 + 3333 + 33333。
?
1
2
3
4
5
6
7
8int S = 0;
int t = 0;
for (int i = 0;i < 5;i++ )
{
t = t * 10 + 3;
S = S + t;
}
printf("%d",S);
累加算法也可以演化为连乘的形式:S = 1 * 2 * 3 * ... * n。
连乘的算法和累加算法相似,循环体实现的是S = S * T的形式。需要注意的S的初值不是0,而是要设为1。
在求连乘时,由于每乘一次结果增长都非常快,所以应该注意是否会出现溢出的问题。
循环程序设计思路:
(1)输入是什么?用来确定原始值。
(2)输出是什么?确定应该输出的结果。
(3)从输入转换为输出需要怎样的步骤,是否需要重复(确定是否需要使用循环语句以及循环语句的内容)。
(4)如果需要重复,能否提前预知重复的次数?用来确定使用while、do while、for中的哪种循环语句。
(5)何时不再需要重复?用来确定循环条件以及循环体中使循环条件趋近于0的语句。
例:水仙花数、四叶玫瑰数、五角星数、六位数的问题。
水仙花数:每位数字的3次幂之和等于它本身。例:1^3 + 5^3 + 3^3 = 153。
四叶玫瑰数:每位数字的4次幂之和等于它本身。
五角星数:每位数字的5次幂之和等于它本身。
六位数:每位数字的6次幂之和等于它本身。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28// 打印出所有的水仙花数
int i,j,k,n,s;
for(i = 1;i <= 9;i++)
for(j = 0;j <= 9;j++)
for(k = 0;k <= 9;k++)
{
n = k * k * k + j * j * j + i * i * i;
s = i * 100 + j * 10 + k;
if (n == s)
{
printf("%d",n);
}
}
或:
// 打印出所有水仙花数
int i,j,k,n,s;
printf("水仙花数有:");
for(n = 100;n < 1000;n++)
{
i = n / 100; /*分解出百位*/
j = n / 10 % 10; /*分解出十位*/
k = n % 10; /*分解出个位*/
s = i * i * i + j * j * j + k * k * k;
if(s == n)
{
printf("%d",n);
}
}
最后我用例子来总结一下吧! 下面的例子是一个对1-10这10个数求和的例子。
复制代码 代码如下:
int i, sum = 0, num = 10; // 声明几个变量:i 计数, sum 存储最后的总和, num 表示多少个数,用来控制边界。
for(i = 1; i <= num; i++) // for语句包含三个语句,用;隔开。
{ //1设置初始值,2边界控制,3通常用来调整计数值。
sum += i; // 相当于 sum = sum + i; 表示不断地加i。 {}内的语句均为循环体,用4表示。
} // for循环的执行顺序为 1-2-4-3-2-4-3-2-4-3-2................直到i > num.这时,将退出循环。
printf("The sum from 1 to 10 is ", sum); // 打印输出sum值。
浏览量:2
下载量:0
时间:
浏览量:2
下载量:0
时间:
浏览量:2
下载量:0
时间:
浏览量:2
下载量:0
时间:
c语言中while的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中while的用法的用法,希望对你们有用。
while语句的一般形式为:
while(表达式) 语句
其中表达式是循环条件,语句为循环体。
while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用下图表示。
【例6-2】用while语句计算从1加到100的值。用传统流程图和N-S结构流程图表示算法,见图:
01.#include <stdio.h>
02.int main(void){
03. int i,sum=0;
04. i=1;
05. while(i<=100){
06. sum=sum+i;
07. i++;
08. }
09. printf("%d",sum);
10. return 0;
11.}
【例6-3】统计从键盘输入一行字符的个数。
01.#include <stdio.h>
02.int main(void){
03. int n=0;
04. printf("input a string:");
05. while(getchar()!='') n++;
06. printf("%d",n);
07. return 0;
08.}
本例程序中的循环条件为getchar()!='',其意义是,,只要从键盘输入的字符不是回车就继续循环。循环体n++完成对输入字符个数计数。从而程序实现了对输入一行字符的字符个数计数。
使用while语句应注意以下两点。
1) while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。
01.#include <stdio.h>
02.int main(void){
03. int a=0,n;
04. printf(" input n: ");
05. scanf("%d",&n);
06. while (n--) printf("%d ",a++*2);
07. return 0;
08.}
本例程序将执行n次循环,每执行一次,n值减1。循环体输出表达式a++*2的值。该表达式等效于(a*2; a++)。
2) 循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。
浏览量:2
下载量:0
时间:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。接下来小编为大家整理了人体部位词汇中英互译c语言double的用法,希望对你有帮助哦!
double、float都是浮点型。double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大。double精度是float的两倍,所以需要更精确的计算常使用double。
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。
浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.quduwen,但不存开头的0和点
指数存指数的有效数字。
指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位 -- float.
数符加尾数占48位,指数符加指数占16位 -- double.
知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是你想知道的数值范围。
对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。
浏览量:2
下载量:0
时间:
adore做动词有爱慕;崇拜;很喜欢等意思,那么你知道adore的过去式是什么吗?下面跟着读文网小编一起来学习一下,欢迎大家学习!
1. She adored Paddy but he didn't treat her well.
她深爱帕迪,但他对她却并不好。
2. She adored her parents and would do anything to please them.
她很爱自己的父母,为让他们高兴愿意做任何事。
3. My mother had a suitor who adored her.
我妈妈曾经有一个爱慕她的追求者。
4. Nearly all her subordinates adored her.
几乎所有的下属都崇拜她。
5. What a darling film — everyone adored it.
多么令人着迷的一部电影啊——所有人都非常喜欢。
6. For all her faults, Tallulah's friends tolerated and even adored her.
尽管塔卢拉有缺点, 她的朋友们却宽容她,甚至崇拜她.
7. They adored her as a living goddess.
他们把她当作活女神崇拜.
8. He adored her as a goddess.
他把她当作女神崇拜.
9. He was a handsome man still, Kathleen adored him.
他仍然是一个仪表堂堂的男子汉,受到凯丝琳的崇拜.
10. He adored his children, and had but one object in life.
他宠爱他的儿子, 他一生只有一个目的.
11. Barnett cared about little except his teenage son, whom he adored.
巴内特除了最心爱的十几岁的儿子, 没有别的牵挂.
12. He was strong - willed and warm - hearted, and he adored her.
他意志坚强,心地善良, 对她爱恋至深.
13. While he slept she adored him with all her heart.
他睡觉时,她在真心实意地洋溢着对他的爱.
14. The queen was adored to the point of idolatry.
女王被崇敬得快成偶像了.
15. Winnie also liked children and Lisa adored her.
温妮也很喜欢孩子,莉萨对她简直是五体投地.
浏览量:3
下载量:0
时间:
abandon做动词有放弃;抛弃;放纵等意思,那么你知道abandon的第三人称单数是什么吗?接下来跟着读文网小编来学习一下吧。
abandon的用法1:abandon的基本意思是“弃”。一是指因困难或危险(尤指因匆忙或想要逃跑)不得已而放弃某物或者离开某地,即停止行使权力或所有权的实施而“离弃”“放弃”“舍弃”或“丢弃”; 二是指不顾责任或义务而“离弃”“遗弃”或“抛弃”某人,如需要抚养的儿女、需要赡养的父母或者需要照顾的伤残病人等; 三是指中途停止已经开始或正在进行而尚未完成或取得成果的工作、事业,“放弃”某种信仰、希望或想法,“背弃”某种诺言而停止实施帮助或支持,“戒除”某种行为或说话方式以及不良习惯等。
abandon的用法2:abandon所指的“放弃”强调“永远”和“完全”。其动机既可以是正确的,也可以是不正确的; 既可以是被迫的,也可以是出于逃避责任的主观故意。
abandon的用法3:abandon一般用作及物动词,接名词或代词作宾语,有时还可接以“as+形容词”充当补足语的复合宾语,可用于被动结构。abandon的主语通常是人。作“离弃”“遗弃”解时宾语为人,其后常接介词短语to sth;作“放弃”“舍弃”解时宾语为物,其后常接介词短语to sb/sth。
浏览量:3
下载量:0
时间:
donate做动词有捐赠;捐献等意思,那么你知道donate的过去式是什么吗?下面跟着读文网小编一起来学习一下,希望对大家的学习有所帮助!
donate的用法1:donate多指向慈善团体捐赠物品、钱等。
donate的用法2:常与介词to连用。
浏览量:3
下载量:0
时间:
document做动词有记载;(用文件等)证明等意思,那么你知道document的过去式是什么吗?接下来跟着读文网小编来学习一下吧。
document的用法1:document的基本意思是“证明”,指提供一种可以作为资料来源、权利证据、要求和竞争的根据,对所有者和其他人都有价值的文件或契约的说明,引申可表示“记录”“记载”。
document的用法2:document只用作及物动词,接名词或代词作宾语,可用于被动结构。
浏览量:3
下载量:0
时间:
abandon做动词有放弃;抛弃;放纵等意思,那么你知道abandon的过去式是什么吗?下面是读文网小编整理的abandon的过去式和用法例句,
abandon的用法1:abandon的基本意思是“弃”。一是指因困难或危险(尤指因匆忙或想要逃跑)不得已而放弃某物或者离开某地,即停止行使权力或所有权的实施而“离弃”“放弃”“舍弃”或“丢弃”; 二是指不顾责任或义务而“离弃”“遗弃”或“抛弃”某人,如需要抚养的儿女、需要赡养的父母或者需要照顾的伤残病人等; 三是指中途停止已经开始或正在进行而尚未完成或取得成果的工作、事业,“放弃”某种信仰、希望或想法,“背弃”某种诺言而停止实施帮助或支持,“戒除”某种行为或说话方式以及不良习惯等。
abandon的用法2:abandon所指的“放弃”强调“永远”和“完全”。其动机既可以是正确的,也可以是不正确的; 既可以是被迫的,也可以是出于逃避责任的主观故意。
abandon的用法3:abandon一般用作及物动词,接名词或代词作宾语,有时还可接以“as+形容词”充当补足语的复合宾语,可用于被动结构。abandon的主语通常是人。作“离弃”“遗弃”解时宾语为人,其后常接介词短语to sth;作“放弃”“舍弃”解时宾语为物,其后常接介词短语to sb/sth。
浏览量:3
下载量:0
时间: